package estructuras;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

import java.util.Collection;
import java.util.NoSuchElementException;


/**
 *
 * @author asus
 */
public interface Queue<E> {
    
    /**
     * Devuelve la cabeza de la cola, pero no la retira de ésta. 
     * @return primer elemento de la cola
     * @throws NoSuchElementException si la cola está vacía 
     */
    public E element() throws NoSuchElementException;
    
    /**
     * Intenta ingresar el elemento a la cola, y regresa un valor booleano que indica si la operación tuvo éxito
     * @param o elemento a ingresar
     * @return true si la operación fue exitosa, false en el caso contrario
     */
    public boolean offer (E o);
    
    /**
     * Devuelve el primer elemento de la cola, sin retirarlo
     * @return primer elemento de la cola
     */
    public E peek();
    
    /**
     * Devuelve el primer elemento de la cola y lo retira de ésta. 
     * @return primer elemento de la cola
     */
    public E poll();
    
    /**
     * Intenta remover la cabeza de la cola
     * @return cabeza de la cola
     * @throws NoSuchElementException si la cola está vacía 
     */
    public E remove() throws NoSuchElementException;
    
}
